<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:zj="http://www.zju.edu.cn" exclude-result-prefixes="zj">
  <xsl:variable name="zj:NoRecord">
    <tr>
      <td colspan="20" class="pad5" bgColor="white">没有内容</td>
    </tr>
  </xsl:variable>
  <xsl:template name="zj:OperationHead">
    <th width="70">操作</th>
  </xsl:template>
  <xsl:template name="zj:DefaultOperation">
    <xsl:param name="UpdateAddress"/>
    <xsl:param name="DeleteAddress"/>
    <td align="center">
      <a href="{$UpdateAddress}">修改</a> | <a href="{$DeleteAddress}" onclick='return confirm("确定删除吗？");'>删除</a>
    </td>
  </xsl:template>
  <xsl:template name="zj:EmptyOperation">
    <td align="center">
      <xsl:call-template name="zj:WhiteSpace"/>
    </td>
  </xsl:template>
  <xsl:template name="zj:ListItem">
    <xsl:param name="Value"/>
    <xsl:param name="Align"/>
    <td>
      <div class="DivOut" onmouseover="DivOnMouseOver(this);" onmouseout="DivOnMouseOut(this);" align="{$Align}">
        <xsl:value-of select="$Value"/>
      </div>
    </td>
  </xsl:template>
  <xsl:template name="zj:ListRefItem">
    <xsl:param name="Value"/>
    <xsl:param name="HttpRef"/>
    <xsl:param name="Target"/>
    <xsl:param name="Align"/>
    <td>
      <div class="DivOut" onmouseover="DivOnMouseOver(this);" onmouseout="DivOnMouseOut(this);" align="{$Align}">
        <a href="{$HttpRef}">
          <xsl:if test="$Target != ''">
            <xsl:attribute name="target"><xsl:value-of select="$Target"/></xsl:attribute>
          </xsl:if>
          <xsl:value-of select="$Value"/>
        </a>
      </div>
    </td>
  </xsl:template>
  <xsl:template name="zj:ListMailItem">
    <xsl:param name="Value"/>
    <xsl:param name="Align"/>
    <td>
      <div class="DivOut" onmouseover="DivOnMouseOver(this);" onmouseout="DivOnMouseOut(this);" align="{$Align}">
        <a href="mailto:{$Value}">
          <xsl:value-of select="$Value"/>
        </a>
      </div>
    </td>
  </xsl:template>
  <xsl:template name="zj:ListHttpItem">
    <xsl:param name="Value"/>
    <xsl:param name="Align"/>
    <xsl:variable name="UpCaseHttp" select="translate($Value, 'htp', 'HTP')"/>
    <xsl:variable name="HttpRef">
      <xsl:if test="not(starts-with($UpCaseHttp, 'HTTP'))">http://</xsl:if>
      <xsl:value-of select="$Value"/>
    </xsl:variable>
    <td>
      <div class="DivOut" onmouseover="DivOnMouseOver(this);" onmouseout="DivOnMouseOut(this);" align="{$Align}">
        <a target="_blank" href="{$HttpRef}">
          <xsl:value-of select="$Value"/>
        </a>
      </div>
    </td>
  </xsl:template>
  <xsl:template name="zj:NoSortColHead">
    <xsl:param name="Title"/>
    <th>
      <xsl:if test="zj:Display/@ListWidth">
        <xsl:attribute name="width"><xsl:value-of select="zj:Display/@ListWidth"/></xsl:attribute>
      </xsl:if>
      <xsl:value-of select="$Title"/>
    </th>
  </xsl:template>
  <xsl:template name="zj:DisplayListItem">
    <xsl:param name="DataRecord"/>
    <xsl:param name="FieldList"/>
    <xsl:param name="Source"/>
    <xsl:variable name="Value" select="$DataRecord/*[local-name()=current()/zj:FieldName]"/>
    <xsl:variable name="CheckValue" select="zj:Extension/@CheckValue"/>
    <xsl:choose>
      <xsl:when test="$CheckValue!=''">
        <td class="blackBorder">
          <xsl:call-template name="zj:WhiteSpace"/>
          <xsl:choose>
            <xsl:when test="$Value=$CheckValue">
              <xsl:value-of select="'√'"/>
            </xsl:when>
            <xsl:otherwise>
              <xsl:value-of select="'X'"/>
            </xsl:otherwise>
          </xsl:choose>
          <xsl:call-template name="zj:WhiteSpace"/>
        </td>
      </xsl:when>
      <xsl:when test="zj:Upload">
        <td>
          <div class="DivOut" onmouseover="DivOnMouseOver(this);" onmouseout="DivOnMouseOut(this);">
            <xsl:call-template name="zj:DisplayUpload">
              <xsl:with-param name="Field" select="."/>
              <xsl:with-param name="DataRecord" select="$DataRecord"/>
              <xsl:with-param name="FieldList" select="$FieldList"/>
            </xsl:call-template>
          </div>
        </td>
      </xsl:when>
      <xsl:otherwise>
        <xsl:variable name="Link" select="zj:Display/Link"/>
        <xsl:variable name="RefValue" select="$DataRecord/*[local-name()=$Link/@ID]"/>
        <xsl:variable name="HRefType" select="$Link/@HRefType"/>
        <xsl:variable name="DisplayValue">
          <xsl:call-template name="zj:DisplayValue">
            <xsl:with-param name="Field" select="."/>
            <xsl:with-param name="Value" select="$Value"/>
          </xsl:call-template>
        </xsl:variable>
        <xsl:variable name="HRefAddress">
          <xsl:choose>
            <xsl:when test="zj:Display/@ListRef='true'">
              <xsl:variable name="IDValue">
                <xsl:call-template name="zj:ListQueryString">
                  <xsl:with-param name="DataRecord" select="$DataRecord"/>
                  <xsl:with-param name="FieldList" select="$FieldList"/>
                </xsl:call-template>
              </xsl:variable>
              <xsl:choose>
                <xsl:when test="contains( $zj:SelfURL,'AutoTable')">
                <xsl:value-of select="concat('../Pages/AutoTableDetailPage.zjx?Table=', $Source, '&amp;', $IDValue, 'RetURL=', $zj:SelfURL)"/>
              </xsl:when>
                <xsl:otherwise>
                  <xsl:value-of select="concat('../Pages/WebDetail', $zj:ModuleXml, 'Page.zjx?Source=', $Source, '&amp;', $IDValue, 'RetURL=', $zj:SelfURL)"/>
                </xsl:otherwise>
              </xsl:choose>
            </xsl:when>
            <xsl:otherwise>
              <xsl:call-template name="zj:HRefAddress">
                <xsl:with-param name="HRefType" select="$HRefType"/>
                <xsl:with-param name="Link" select="$Link"/>
                <xsl:with-param name="RefValue" select="$RefValue"/>
                <xsl:with-param name="Value" select="$Value"/>
              </xsl:call-template>
            </xsl:otherwise>
          </xsl:choose>
        </xsl:variable>
        <xsl:choose>
          <xsl:when test="$HRefType='HTTP'">
            <xsl:call-template name="zj:ListHttpItem">
              <xsl:with-param name="Value" select="$DisplayValue"/>
              <xsl:with-param name="Align" select="zj:Display/@Align"/>
            </xsl:call-template>
          </xsl:when>
          <xsl:when test="$HRefType='EMAIL'">
            <xsl:call-template name="zj:ListMailItem">
              <xsl:with-param name="Value" select="$DisplayValue"/>
              <xsl:with-param name="Align" select="zj:Display/@Align"/>
            </xsl:call-template>
          </xsl:when>
          <xsl:when test="$HRefType='HREF'">
            <xsl:call-template name="zj:ListRefItem">
              <xsl:with-param name="Value" select="$DisplayValue"/>
              <xsl:with-param name="HttpRef" select="$HRefAddress"/>
              <xsl:with-param name="Target" select="$Link/@Target"/>
              <xsl:with-param name="Align" select="zj:Display/@Align"/>
            </xsl:call-template>
          </xsl:when>
          <xsl:otherwise>
            <xsl:call-template name="zj:ListItem">
              <xsl:with-param name="Value" select="$DisplayValue"/>
              <xsl:with-param name="Align" select="zj:Display/@Align"/>
            </xsl:call-template>
          </xsl:otherwise>
        </xsl:choose>
      </xsl:otherwise>
    </xsl:choose>
  </xsl:template>
  <xsl:template name="zj:Operation">
    <xsl:param name="DataRecord"/>
    <xsl:param name="Table"/>
    <xsl:param name="Source"/>
    <xsl:param name="IsUpdate" select="true()"/>
    <xsl:param name="IsDelete" select="true()"/>
    <xsl:choose>
      <xsl:when test="not($IsUpdate) and not($IsDelete)">
        <xsl:call-template name="zj:EmptyOperation"/>
      </xsl:when>
      <xsl:otherwise>
        <xsl:variable name="IDValue">
          <xsl:call-template name="zj:ListQueryString">
            <xsl:with-param name="DataRecord" select="$DataRecord"/>
            <xsl:with-param name="FieldList" select="$Table/*/zj:Field"/>
          </xsl:call-template>
        </xsl:variable>
        <xsl:variable name="ListRefParam">
          <xsl:call-template name="zj:ListRefParam">
            <xsl:with-param name="Params" select="$Table/zj:ListRefParams[not(@Insert)]"/>
          </xsl:call-template>
        </xsl:variable>
       
        <xsl:variable name="UpdateURL">
          <xsl:choose>
            <xsl:when test="contains( $zj:SelfURL,'AutoTable')">
              <xsl:value-of select="concat('AutoTableUpdatePage.zjx?Table=', $Source, '&amp;', $IDValue, $ListRefParam, 'RetURL=', $zj:SelfURL)"/>
            </xsl:when>
            <xsl:otherwise>
              <xsl:value-of select="concat('WebUpdate',$zj:ModuleXml, 'Page.zjx?Source=', $Source, '&amp;', $IDValue, $ListRefParam, 'RetURL=', $zj:SelfURL)"/>
            </xsl:otherwise>
          </xsl:choose>
        </xsl:variable>
        <xsl:variable name="DeleteURL">
          <xsl:choose>
            <xsl:when test="contains( $zj:SelfURL,'AutoTable')">
              <xsl:value-of select="concat('AutoTableDeletePage.zjx?Table=', $Source, '&amp;', $IDValue, $ListRefParam, 'RetURL=', $zj:SelfURL)"/>
            </xsl:when>
            <xsl:otherwise>
              <xsl:value-of select="concat('WebDelete',$zj:ModuleXml, 'Page.zjx?Source=', $Source, '&amp;', $IDValue, $ListRefParam, 'RetURL=', $zj:SelfURL)"/>
            </xsl:otherwise>
          </xsl:choose>
        </xsl:variable>
        <!--<xsl:variable name="URL" select="concat($zj:ModuleXml, 'Page.zjx?Source=', $Source, '&amp;', $IDValue, $ListRefParam, 'RetURL=', $zj:SelfURL)"/>-->
        <td align="center">
          <xsl:if test="$IsUpdate">
            <a href="{concat('../Pages/', $UpdateURL)}">修改</a>
          </xsl:if>
          <xsl:if test="$IsUpdate and $IsDelete"> | </xsl:if>
          <xsl:if test="$IsDelete">
            <a href="{concat('../Pages/', $DeleteURL)}" onclick='return confirm("确定删除吗？");'>删除</a>
          </xsl:if>
        </td>
      </xsl:otherwise>
    </xsl:choose>
  </xsl:template>
  <xsl:template name="zj:OptionOperation">
    <xsl:param name="DataRecord"/>
    <xsl:param name="Table"/>
    <xsl:param name="Source"/>
    <xsl:param name="IsUpdate"/>
    <xsl:param name="IsDelete"/>
    <xsl:choose>
      <xsl:when test="not($IsUpdate) and not($IsDelete)">
        <xsl:call-template name="zj:EmptyOperation"/>
      </xsl:when>
      <xsl:otherwise>
        <xsl:variable name="IDValue">
          <xsl:call-template name="zj:ListQueryString">
            <xsl:with-param name="DataRecord" select="$DataRecord"/>
            <xsl:with-param name="FieldList" select="$Table/*/zj:Field"/>
          </xsl:call-template>
        </xsl:variable>
        <xsl:variable name="ListRefParam">
          <xsl:call-template name="zj:ListRefParam">
            <xsl:with-param name="Params" select="$Table/zj:ListRefParams[not(@Insert)]"/>
          </xsl:call-template>
        </xsl:variable>
        <xsl:variable name="URL" select="concat($zj:ModuleXml, 'Page.zjx?Source=', $Source, '&amp;', $IDValue, $ListRefParam, 'RetURL=', $zj:SelfURL)"/>
        <td align="center">
          <xsl:if test="$IsUpdate">
            <a href="{concat('../Pages/WebUpdate', $URL)}">修改</a>
          </xsl:if>
          <xsl:if test="$IsUpdate and $IsDelete"> | </xsl:if>
          <xsl:if test="$IsDelete">
            <a href="{concat('../Pages/WebDelete', $URL)}" onclick='return confirm("确定删除吗？");'>删除</a>
          </xsl:if>
        </td>
      </xsl:otherwise>
    </xsl:choose>
  </xsl:template>
  <xsl:template name="zj:ListRefParam">
    <xsl:param name="Params"/>
    <xsl:for-each select="$Params">
      <xsl:value-of select="concat('&amp;', @Name, '=')"/>
      <xsl:choose>
        <xsl:when test="@Value">
          <xsl:value-of select="@Value"/>
        </xsl:when>
        <xsl:otherwise>
          <xsl:variable name="Param" select="."/>
          <xsl:value-of select="$zj:Toolkit/*[local-name()=$Param/@TableName][1]/*[local-name()=$Param/@FieldName]"/>
        </xsl:otherwise>
      </xsl:choose>
    </xsl:for-each>
  </xsl:template>
</xsl:stylesheet>
